As computer and other digital systems become more complex and more capable, methods and hardware to enhance the transfer of data between system components or elements continually evolve. Data to be transferred includes digital signals representing data, commands, addresses, or any other information. System components or elements can include different functional hardware blocks on a single integrated circuit (IC), or on different ICs. The different ICs may or may not be on the same printed circuit board (PCB). System components typically include an input/output (I/O) interface specifically designed to receive data from other system components and to transmit data to other system components.
One consistent trend as computing systems become more capable is an increase in the amount of data to be transferred per time period. Some applications that require high data rates include game consoles, high definition television (HDTV), personal computers (PCs) main memory, graphics processors, and various consumer devices not already mentioned. In response to the demand for increased data rates, double data rate (DDR) standards have been developed to standardize the behavior of hardware and software using high data rates. Several generations of graphics DDR (GDDR) standards have been developed specifically for graphics processing and video processing, which typically demand the capability to transfer and process very large amounts of data.
A conventional DDR dynamic random access memory (DRAM) protocol specifies a 256-bit write command according to which 256 bits are transferred as bytes over a 32-bit interface and written in response to a single write command. In some instances, it is necessary to write only a portion of the 256 bits (some but not all of the bytes). This will be referred to as a byte-write operation herein. One conventional byte-write method is to read the 256 bits that are in the DRAM, modify the portion to be changed, and write all of the 256 bits back. This method is commonly used in central processing units (CPUs), and is referred to as a read-modify-write operation. Unfortunately, for high-speed applications, such as graphics applications, read-modify-write operations are both too slow and too complex to implement. One reason is that graphics processors often use a complex operation reordering schemes in order to optimize the memory interface. So historically DRAMs have instead implemented a data mask which is transmitted on an additional, dedicated data mask signal pin for every 8-bit byte. The mask signal on the data mask pins is a multi-bit signal, and each bit indicates whether a corresponding byte should be written or not. This data mask method is referred to in existing DRAM specifications. One disadvantage of this method is it results in one extra pin for every eight data bit pins, thus increasing the pin count.
In addition, the existing data mask method in existing DRAM specifications is not applicable in high speed interfaces which are susceptible to data bit errors. One reason is that the errors on the data mask pins are fatal. This is due to the fact that an error on the data mask pin may result in a byte write that was not intended. The data in that byte would be destroyed (overwritten) and could not be retried.
FIG. 1A is a block diagram of components of a prior art digital system 100. The components include a processor 102 and a memory component 104. The processor 102 controls the memory component 104 by communicating over an interface that includes address/command lines, data lines, and separate, dedicated data mask lines. The memory component 100 is a DDR memory that communicates with the processor 102 over a DDR interface.
FIG. 1B is a timing diagram illustrating a write operation 106 with a data mask, as performed by the prior art components of FIG. 1A. In this illustration, the interface is a 64-bit interface. 64 bits are transmitted in a single operation in eight bursts. The top waveform is the clock (CLK) waveform. The waveform below the CLK waveform shows the commands on the address/command lines. Three write commands are shown, write 108, write 110 and write 112. The data waveform is shown below the address/command waveform. In each of the valid data periods labeled 1-8, eight bits of data are transmitted. A data mask waveform is shown below the data waveform. The data mask waveform indicates the values being transmitted on the data mask lines. For write 108, the data mask line is high during the entire write. In this illustration, a high data mask bit, or a 1 logic level on a data mask line, indicates that the corresponding byte is to be written. So, for write 108, all of the bytes 108 are to be written.
Write 110 differs from write 108. Write 110 is a byte-write in which only particular bytes of the eight bytes are to be written. Referring to the data mask waveform for write 110, it can be seen that the data mask has a value of 10110111, and bytes 1, 3, 4, 6, 7, and 8 are to be written. Therefore, data mask pins and lines are required to be available for each write operation, even if byte-write operations make up a small percentage of write operations, as is often the case in many modern applications.
In the drawings, the same reference numbers identify identical or substantially similar elements or acts. To easily identify the discussion of any particular element or act, the most significant digit or digits in a reference number refer to the Figure number in which that element is first introduced (e.g., element 102 is first introduced and discussed with respect to FIG. 1).